草庐IT

c++ - 从 32 位进程获取 64 位进程内存的入口点

我想获取我从32位进程编写的64位进程的入口点,就像您使用EnumProcessModule并获取主模块的内存地址一样。我的最终目标是从我的64位进程中的内存中读取一个字节,从它的偏移量(entry+Offset)。但是我的NtWow64ReadVirtualMemory64函数一直失败。我认为这与我的入口内存地址有关。#definePROC_BASIC_INFO0#defineNT_WOW64_QUERY_INFORMATION_PROCESS_64_NAME"NtWow64QueryInformationProcess64"#defineNT_WOW64_READ_VIRTUAL_

C++循环在按下键时模拟按键

我正在尝试获得一个小应用程序,它将在按下另一个键时连续模拟UP(↑箭头键),在我的例子中是RightCTRL。然而,我编写的代码每次按下只会发送一个UP-当我按住RightCTRL时,它只会发送一个UP并停止。我想说的是,这段代码完全是根据我在网上找到的文档构建的,我以前从未用C++或任何其他语言编写过任何东西,因此任何建议都会对我有很大帮助。我最初尝试在CAPSLOCK处于事件状态时执行此操作,但我发现无论我尝试什么,获取键状态(开/关)对我来说根本不起作用。intmain(){//Thisstructurewillbeusedtocreatethekeyboard//inputev

c++ - Windows:处理所有线程中的段错误

我正在寻找一种方法来捕获程序中任何地方的段错误和其他错误(它使用多个线程,其中一些是由外部库创建的)。我将VisualStudio2013与英特尔C++编译器2015结合使用。一些外部DLL-在某些情况下我什至在Windows驱动程序中看到过这种情况-可能包含我无法控制的错误,并且我的软件全天候运行24/7-我需要能够在某处记录崩溃并重新启动我的软件。到目前为止,我发现您可以设置一个信号处理程序来处理SIGSEGV和其他信号。根据我的阅读,在Linux下这将完全满足我的需要(为所有线程处理此信号),但在Windows下您需要分别为每个线程设置信号处理程序。因为我不是创建所有线程的人(如

c++ - 我们如何调试在 C++ 应用程序中使用的 matlab 制作的 DLL?

我们有使用mcc编译成DLL的matlab.m文件。这由我们在VisualStudio中调试的C++GUI应用程序使用。当我们到达对我们的matlab函数的调用时,我们所能做的就是跳过它。我们如何在源代码级别调试.m代码?我认为添加一些“打印”语句(在matlab中实际上称为“disp”)并在VS的输出窗口中观察内容滚动会很容易。但我们什么也没看到。甚至不是来自C++源代码中的printf(),也不是直接从命令行而不是在VS中运行我们的应用程序。从Google和S.O.,我们了解到发送到stdout的任何东西都不会出现在任何地方。(这个问题是相关的:VisualStudio2012C+

c++ - CMake:在 Windows 上找不到编译器

当我运行它时:cmake-G"VisualStudio152017Win64"我有这个输出:--TheCcompileridentificationisunknown--TheCXXcompileridentificationisunknownCMakeErroratCMakeLists.txt:2(project):NoCMAKE_C_COMPILERcouldbefound.CMakeErroratCMakeLists.txt:2(project):NoCMAKE_CXX_COMPILERcouldbefound.--Configuringincomplete,errorsoccu

c++ - 调试线程时无限循环

我正在尝试将硬件断点附加到游戏进程,我成功了。然后我试图遍历异常并等待我放在那里的异常,它也工作正常。问题是,在它发生之后,它进入了我无法刹车的无限循环。你能建议吗?我这样做的原因是我想在此时停止线程,使用Context读取EAX值,然后继续该过程。Header.h包括在这里调用的函数,它们都工作正常,因此我现在不包括它。#include"Header.h"#包括intmain(){SetDebugPrivilege(TRUE);DWORDdwProcessID=0;DWORDdwGame=0;printf("Lookingforgameprocess...\n");while(dwP

c++ - 为什么在使用 VS 2008 构建 DLL 时不遵循 "Use MFC in a Static Library"设置?

我的目标是创建一个MFC/C++DLL,它除了基本的Win32DLL之外没有任何依赖项。所以我在项目属性中选择了“UseMFCinaStaticLibrary”设置->General->UseofMFC:但是当我构建这个DLL并使用DependencyWalker检查结果时,我得到了这个:显示对以下MFCDll的依赖关系:MFC90U.DLLMSVCR90.DLLMSVCP90.DLL那么我做错了什么?附言。我正在使用VisualStudio2008 最佳答案 我想我明白了。让我感到困惑的是C++->CodeGeneration->

c++ - 如果不运行 Inspect.exe、Magnify.exe、Narrator.exe 之一,则无法获得最深的 IUIAutomationElement

仅当应用“X”(Inspect.exe|Narrator.exe|Magnify.exe)正在运行时,我才能在Windows应用程序中获取一些IUIAutomationElements。如果没有“X”运行,我尝试从中获取IUAutomationElement的应用程序本质上变成了一个黑盒子。例如,在MicrosoftExcel中,我可以在“X”运行时获取单元格标识符(A1、D6等)。如果背景中没有“X”,我得到的最详细的细节就是Excel工作簿本身。我已经尝试设置uiAccess=true并签署应用程序(使用http://techsupt.winbatch.com/webcgi/web

c++ - Windows Readfile 返回 ERROR_INVALID_PARAMETER 87

我的程序创建了一个邮槽,但是当我调用ReadFile时,我得到了ERROR_INVALID_PARAMETER。参数不对怎么办?程序代码:SECURITY_DESCRIPTORsd;InitializeSecurityDescriptor(&sd,SECURITY_DESCRIPTOR_REVISION);SetSecurityDescriptorDacl(&sd,true,NULL,false);SECURITY_ATTRIBUTESsa;sa.lpSecurityDescriptor=&sd;sa.bInheritHandle=true;msg_id_=CreateMailslot

c++ - ShowCursor(FALSE) 不在控制台应用程序上隐藏光标

我知道这听起来像是一个重复的问题,但请相信我,事实并非如此。我已经提到了这个question,但没有太大帮助,因为我正在尝试使用控制台应用程序并且回答者自己告诉他不知道ShowCursor(FALSE)不适用于控制台应用程序的原因。这thread也没有帮助我。这是我尝试过的:使用ShowCursor():while(ShowCursor(false)>=0);//didnotwork我开始怀疑是因为msdn里面的这个语句:当Windows启动时,它会检查您是否有鼠标。如果是,则将游标显示计数初始化为零;否则,它被初始化为负数。我想也许在最新的Windows中,它无法将连接的鼠标或触控板